package com.dream.servlet;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author 匠人码农
 * @date 2020/11/01 21:33
 * 概要：
 *     servlet的第二个程序。
 *     1.servlet程序的实现方式之二（继承HttpServlet）
 *       1.1 新建servlet类继承HttpServlet
 *       1.2 根据业务需求重写doGet或者doPost方法
 *       1.3 去web.xml中配置servlet程序的访问地址。
 *     2.通过继承HttpServlet的方式实现servlet程序如何取得sevletConfig信息。（getServletConfig()）
 *     3.如果对init方法进行重写必须调用super(ServletConfig)方法，否则servlet为null。
 *       super(ServletConfig对servletConfig进行了赋值)
 */

public class HelloServlet2 extends HttpServlet {

    @Override
    public void init(ServletConfig servletConfig) throws ServletException {

        System.out.println("对init方法进行了重写！");
        //如果对init(ServletConfig)方法进行重写，那么必须调用下面的方法，否则会出现500错误。
        super.init(servletConfig);

    }

    /**
     * 重写doGet方法
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet2 goGet方法");

        /**
         * 在service方法中获取servletConfig配置信息
         *
         */
        System.out.println("=====在service方法中获取servletConfig信息=====");

        //获取servletConfig对象
        ServletConfig servletConfig = getServletConfig();

        //获取servlet名称
        System.out.println("servlet别名：" + servletConfig.getServletName());

        //获取servletContext名称
        System.out.println("servletContext对象：" + servletConfig.getServletContext());

        //获取init参数值
        System.out.println("获取HelloServlet2的servletConfig参数user = " + servletConfig.getInitParameter("user"));
    }

    /**
     *
     * @param req
     * @param resp
     * @throws ServletException
     * @throws IOException
     */
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet2 doPost方法！");
    }
}
